class ARRAY3{T} < $ELT{T}
****
Three-dimensional arrays of elements of type T.


Flattened version is here

Ancestors
$ELT{_} $ELT AREF{_}



Public


Readable Attributes
attr size1:INT;
**** Size of the slowest changing dimension. multiplication in accessing the array
attr size2:INT;
**** Size of the second fastest changing dimension. multiplication in accessing the array
attr size3:INT;
**** Size of the fastest changing dimension. multiplication in accessing the array

Features
aget(i1,i2,i3:INT):T
**** The element with indices `[i1,i2,i3]'.
aset(i1,i2,i3:INT,val:T)
**** Set the element with indices `[i1,i2,i3]' to val.
copy: SAME
**** Return a new 3D array with the same set of values as self
create(a: ARRAY{ARRAY{ARRAY{T}}}): SAME
create(d1,d2,d3:INT):SAME
**** A new three-dimensional array with dimensions `d1 x d2 x d3' initialized to void.
nc: INT
**** The size of the second dimension of the array. Number of cols
ne: INT
**** The size of the third dimension of the array. Number of elements
nr: INT
**** The size of the first dimension of the array. Number of rows
to_transpose_of(a1:SAME)
**** Set self to the transpose of a1.
transpose: SAME
**** Return a new array containing the transpose of self

Iters
col_elt!(once col,once elem:INT):T
**** Yield elements by varying index 1 and holding index 2 at `col' and index 3 at `elem'. The elements of a "column" col
______loop_yield(aelt!(col,nr,nc));_end_end;
col_ind!:INT
**** Yield each value of the second index in order. The columns
diag_elt!: T
**** Yield values along the diagonal (square in smaller dimension)
elem_elt!(once row,once col:INT):T
**** Yield elements by varying index 3 and holding index 2 at `col' and index 1 at `row'. The elements of a "elements (third dimension)" elem
elem_ind!:INT
**** Yield each value of the third index in order. The elements
elt!: T
**** Yield all elements in row major order
elt1!(once col,once elem:INT):T
**** Yield elements by varying index 1 and holding index 2 at `col' and index 3 at `elem'. The elements of a "column" col
______loop_yield(aelt!(col,nr,nc));_end_end;
elt2!(once row,once elem:INT):T
**** Yield elements by varying index 2 and holding index 1 at `row' and index 3 at `elem'. The elements of a row "row"
______loop_yield(aelt!(row*nc,nc,1));_end_end;
elt3!(once row,once col:INT):T
**** Yield elements by varying index 3 and holding index 2 at `col' and index 1 at `row'. The elements of a "elements (third dimension)" elem
ind1!: INT
**** Yield each value of the first index in order. The rows
ind2!:INT
**** Yield each value of the second index in order. The columns
ind3!:INT
**** Yield each value of the third index in order. The elements
inds!:TUP{INT,INT,INT}
**** Yield tuples of the indices of self in lexicographical order.
row_elt!(once row,once elem:INT):T
**** Yield elements by varying index 2 and holding index 1 at `row' and index 3 at `elem'. The elements of a row "row"
______loop_yield(aelt!(row*nc,nc,1));_end_end;
row_ind!: INT
**** Yield each value of the first index in order. The rows
set!(val:T)
**** Set all elements in row major order
set1!(once col,once elem:INT, val:T)
**** Set to val elements with varying index 1 and index 2 fixed at `col' and index 3 fixed at `elem'. i.e. setting the column col
______loop_aset!(col,nr,nc,val);_yield_end_end;
set2!(once row,once elem:INT, val:T)
**** Set to val elements with varying index 2 and index 1 fixed at `row' and the index 3 fixed at `elem'. i.e. setting a row "row"
______loop_aset!(row*nc,nc,val);_yield_end_end;
set3!(once row,once col:INT, val:T)
**** Set to val elements with varying index 1 and index 2 fixed at `col' and index 3 fixed at `elem'. i.e. setting the column col
______loop_aset!(col,nr,nc,val);_yield_end_end;
set_col!(once col,once elem:INT, val:T)
**** Set to val elements with varying index 1 and index 2 fixed at `col' and index 3 fixed at `elem'. i.e. setting the column col
______loop_aset!(col,nr,nc,val);_yield_end_end;
set_diag_elt!(val:T)
**** Set values along the diagonal (square in smaller dimension)
set_elem!(once row,once col:INT, val:T)
**** Set to val elements with varying index 1 and index 2 fixed at `col' and index 3 fixed at `elem'. i.e. setting the column col
______loop_aset!(col,nr,nc,val);_yield_end_end;
set_row!(once row,once elem:INT, val:T)
**** Set to val elements with varying index 2 and index 1 fixed at `row' and the index 3 fixed at `elem'. i.e. setting a row "row"
______loop_aset!(row*nc,nc,val);_yield_end_end;


Private

attr size1:INT;
**** Size of the slowest changing dimension. multiplication in accessing the array
attr size2:INT;
**** Size of the second fastest changing dimension. multiplication in accessing the array
attr size23:INT;
**** size2*size3, pre-multiplied to spare a multiplication in accessing the array
attr size23:INT;
**** size2*size3, pre-multiplied to spare a multiplication in accessing the array
attr size3:INT;
**** Size of the fastest changing dimension. multiplication in accessing the array

The Sather Home Page